package com.thingple.usb.manager;

import android.hardware.usb.UsbAccessory;

import com.thingple.usb.session.UsbSession;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public interface UsbDeviceManager {

    String ACTION_USB_PERMISSION = "ACTION.USB.DEVICE.REQUEST.PERMISSION";

    /**
     * 设备回调
     * @param listener listener
     */
    void setListener(DeviceListener listener);

    /**
     * 添加过滤器, 可以增加多个
     * @param vendor 厂商
     * @param product 产品号
     */
    void registerSpec(String vendor, String product);
    void registerSpec(String vendor);

    /**
     * 监听设备插拔事件
     */
    void startMonitor();

    /**
     * 扫描已连接设备(查询一次)
     */
    void scan();

    /**
     * 创建session
     * @param device usb设备
     * @param baudRate 波特率
     * @return session
     */
    @Nullable
    UsbSession createSession(@NotNull UsbAccessory device, int baudRate);

    void onDestroy();
}
